package com.asm.service;

import com.asm.entity.sys.RoleAccess;
import com.asm.repository.RoleAccessRepository;
import com.asm.vo.sys.RoleAccessVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;

/**
 * @author zhangyufu
 * @description 用户角色关联表提供的服务
 * @date 2019/7/15
 */
@Service
public class RoleAccessService {
    @Resource
    private RoleAccessRepository roleAccessRepository;

    /**
     * 根据角色id查询用户角色代码
     *
     * @param userId 用户id
     * @return 用户角色代码列表
     */
    public String getRoleCodesByUserId(Long userId) {
        RoleAccess roleAccess = roleAccessRepository.findRoleAccessByUserIdAndIsDel(userId, false);
        return roleAccess.getRoleCode();
    }

    /**
     * 根据用户id获取其roleAccessVo对象
     *
     * @param userId 用户id
     * @return roleAccessVo对象
     */
    public RoleAccessVo getRoleAccessByUserId(Long userId) {
        RoleAccess roleAccess = roleAccessRepository.findRoleAccessByUserIdAndIsDel(userId, false);
        RoleAccessVo roleAccessVo = new RoleAccessVo();
        BeanUtils.copyProperties(roleAccess, roleAccessVo);
        return roleAccessVo;
    }

    /**
     * 修改用户角色
     *
     * @param roleAccessVo 用户角色关系
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRoleAccess(RoleAccessVo roleAccessVo) {
        RoleAccess roleAccess = roleAccessRepository.findById(roleAccessVo.getId()).get();
        BeanUtils.copyProperties(roleAccessVo, roleAccess);
        roleAccess.setUpdateAt(new Date());
        roleAccess.setUpdateBy(1L);
        roleAccessRepository.save(roleAccess);
    }

}
